package com.smartandroid.sa.sherlock.internal.widget;

import android.content.Context;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.util.Log;
import android.view.Gravity;
import android.widget.TextView;
import android.widget.Toast;

public class IcsToast extends Toast {
	public static final int LENGTH_LONG = Toast.LENGTH_LONG;
	public static final int LENGTH_SHORT = Toast.LENGTH_SHORT;
	private static final String TAG = "Toast";

	public static Toast makeText(Context context, CharSequence s, int duration) {
		if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
			return Toast.makeText(context, s, duration);
		}
		IcsToast toast = new IcsToast(context);
		toast.setDuration(duration);
		TextView view = new TextView(context);
		view.setText(s);
		// Original AOSP using reference on
		// @android:color/bright_foreground_dark
		// bright_foreground_dark - reference on @android:color/background_light
		// background_light - 0xffffffff
		view.setTextColor(0xffffffff);
		view.setGravity(Gravity.CENTER);
		view.setBackgroundResource(context.getResources().getIdentifier(
				"abs__toast_frame", "drawable", context.getPackageName()));
		// view.setBackgroundResource(R.drawable.abs__toast_frame);
		toast.setView(view);
		return toast;
	}

	public static Toast makeText(Context context, int resId, int duration) {
		return makeText(context, context.getResources().getString(resId),
				duration);
	}

	public IcsToast(Context context) {
		super(context);
	}

	@Override
	public void setText(CharSequence s) {
		if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
			super.setText(s);
			return;
		}
		if (getView() == null) {
			return;
		}
		try {
			((TextView) getView()).setText(s);
		} catch (ClassCastException e) {
			Log.e(TAG, "This Toast was not created with IcsToast.makeText", e);
		}
	}
}
